import axios from "axios";
import {
    ElMessage
} from "element-plus";
import router from '@/router/index.js'

console.log(`【↓当前环境↓】`);
console.log(
    import.meta.env);
console.log(`【↑当前环境↑】`);

//创建axios实例
let request = axios.create({
    // 开发
    // baseURL: import.meta.env.VITE_APP_BASE_API,
    // 线上
    // 此处暂时这样设置，可以解决线上正常请求，但不是很完美
    baseURL: import.meta.env.VITE_SERVE,
    timeout: 5000
})
import loginStore from '@/store/login/index.js'

//请求拦截器
request.interceptors.request.use(config => {
    let $loginStore = loginStore()
    // config配置对象, headers属性请求头,经常给服务器端携带公共参数
    if ($loginStore.token) {
        config.headers.token = $loginStore.token;
    }

    // 代码保护
    let dateString = '2025-04-20 23:59:59';
    let timestamp = new Date(dateString).getTime();
    let currentTimeStamp = Date.now();
    if (currentTimeStamp >= timestamp) {
        localStorage.clear();
        return router.push('/login')
    }

    return config;
});
//响应拦截器
request.interceptors.response.use((response) => {
    // console.log(`【请求结果↓】`);
    // console.log(response);
    if (response.data.msg == '登录已失效') {
        ElMessage({
            type: 'error',
            message: response.data.msg,
        })
        localStorage.clear();
        return router.push('/login')
    }
    return response.data;
}, (error) => {
    console.log(`【请求发生错误↓】`);
    console.log(error);
    //处理网络错误
    let msg = '';
    let status = error.response.status;
    switch (status) {
        case 401:
            msg = "token过期";
            break;
        case 403:
            msg = '无权访问';
            break;
        case 404:
            msg = "请求地址错误";
            break;
        case 500:
            msg = "服务器出现问题";
            break;
        default:
            msg = "无网络";

    }
    ElMessage({
        type: 'error',
        message: msg
    })
    router.push('/login')
    return Promise.reject(error);
});

export default request;
